package Leetcode第一期;

import java.util.HashMap;
import java.util.Map;

/**
 * @author : K k
 * @date : 22:50 2020/9/13
 * 在字符串 s 中找出第一个只出现一次的字符。如果没有，返回一个单空格。 s 只包含小写字母。
 *
 * 示例:
 *
 * s = "abaccdeff"
 * 返回 "b"
 *
 * s = ""
 * 返回 " "
 */
public class 第一个只出现一次的字符_50 {
    //拟造有序数组 下标作为字符的ASCLL值，元素值代表出现次数 若元素为1则为答案
    public char firstUniqChar(String s) {
        int[] count = new int[256];
        char[] chars = s.toCharArray();
        for(char c : chars)
            {count[c]++;}
        for(char c : chars){
            if(count[c] == 1)
                {return c;}
        }
        return ' ';
    }

    //HashMap 遍历次数为1则输出
    public char firstUniqCharA(String s) {
         Map<Character, Boolean> dic = new HashMap<>();
         char[] array = s.toCharArray();
         for (char c : array) {
             dic.put(c, !dic.containsKey(c));
         }
         for (char c : array) {
             if (dic.get(c)) return c;
         }

         return ' ';
    }
}
